home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / internet / irc_i_dodatki / kuang / kuangeleven28.lha / Rexx / Kuang11CMD.amirx < prev    next >
Text File  |  1997-03-28  |  23KB  |  939 lines

  1. /* Kuang Eleven commands v2.8 */
  2. /* Away/Back sounds */
  3. backsnd='Back.WAV'
  4. awaysnd='Away.WAV'
  5. /* WallChops/WallNops Prefix.%c replaced with channel*/
  6. wcpr='['x2c(2)'WChOp/%c'x2c(2)']'
  7. wnpr='['x2c(2)'WNOps/%c'x2c(2)']'
  8.  
  9. defaultaway='Making Coffee'
  10.  
  11. /* DO NOT TOUCH BODY OF SCRIPT BELOW ! */
  12. options results
  13. /*signal on syntax*/
  14. if ~show('L','rexxsupport.library') then if ~addlib('rexxsupport.library',0,-30,0) then do
  15.     cecho('Kuang11','Fatal Error: Cannot load rexxsupport.library')
  16.     exit
  17. end
  18. options results
  19. bell=x2c('07');div=x2c('01')
  20. parse arg command args
  21. command=upper(command)
  22. Select
  23.     when command='ACHAN' then achan()
  24.     when command='REALL' then reall()
  25.     when command='VOTE' then vote()
  26.     when command='AWAY' then away()
  27.     when command='SHOW' then showlog()
  28.     when command='XDCC' then xdcc()
  29.     when command='PC' then pc()
  30.     when command='CYCLE' then cycle()
  31.     when command='CHOPS' then wchops()
  32.     when command='IKICK' then ikick()
  33.     when command='KB'|command='BK' then kb()
  34.     when command='SKICK' then skick()
  35.     when command='NFDEOP' then nfdeop()
  36.     when command='PBAN' then pban()
  37.     when command='J' then join()
  38.     when command='VOTETST' then votetst()
  39.     when command='KIGN' then ig()
  40.     when command='KUNG' then noig()
  41.     when command='AMSG' then amsg()
  42.     when command='RANSK' then ransk()
  43.     when command='NOPS' then wnops()
  44.     otherwise
  45.         pr='KHelp'
  46.         cecho(pr,und(bld('Kuang Eleven Command')))
  47.         cecho(pr,'Usage: /kx [KEYWORD] [ARGUMENTS]')
  48.         cecho(pr,'AWAY <Reason> - Toggle Away')
  49.         cecho(pr,'VOTE - Kuang Lamuh Vote')
  50.         cecho(pr,'RANSK - Random Kick')
  51.         cecho(pr,'IKICK - Kick with making channel Invite briefly')
  52.         cecho(pr,'SKICK - Speak Kick')
  53.         cecho(pr,'BK  - KickBan')
  54.         cecho(pr,'PBAN - PermBan')
  55.         cecho(pr,'CHOPS - Write notice to All CHannel OPerators')
  56.         cecho(pr,'NOPS - Write notice to all non-channel operators')
  57.         cecho(pr,'XDCC - XDCC')
  58. end
  59. exit
  60. /* ## Shared functions here
  61. */
  62. notice:;'RAW NOTICE' arg(1) ':'arg(2);return 0
  63. toggle:;t='sc_'||lower(arg(1));if getclip(t)='ON' then x='OFF';else x='ON';Setclip(t,x);return 0
  64. lower:;return translate(arg(1),xrange('a','z'),xrange('A','Z'))
  65. cecho:;"ECHO P="d2c(27)"b«"arg(1)"»" arg(2)'.';return 0
  66. vecho:;"ECHO P="d2c(27)"b«Kuang11»" und(arg(1)||':') arg(2)'.';return 0
  67. bld:;bld = x2c('02');return bld||arg(1)||bld
  68. und:;und=x2c('1F');return und||arg(1)||und
  69. inv:;inv=x2c('16');return inv||arg(1)||inv
  70. me:;'raw PRIVMSG' arg(1) ':'||div||'ACTION' arg(2)||div;return 0
  71. sayc:;'raw NOTICE' arg(1) ':'arg(2);return 0
  72. chans:;"CHANNELS";return result
  73. getnick:;"GETMYNICK";return result
  74. getchan:;"GETCHANNEL";return result
  75. getserv:;"GETSERVERNAME";return result
  76. getusr:;"GETUSERS";return result
  77. userdomain: PROCEDURE;ip=arg(1);if datatype(compress(ip,'.'),'n') then return substr(ip,1,pos('.',ip,pos('.',ip)+1)-1)||'*';pi=translate(strip(lower(reverse(ip))),' ','.');w=words(pi);if w<3 then return ip;do i=3 to w;  if ~datatype(word(pi,i),'L') then leave;end;return '*'||translate(reverse(delword(pi,i)),'.',' ')
  78. ison:;if pos(upper(arg(1))' ',upper(getusr())' ')~==0 then return 1;else return 0
  79. gethost: "USERHOST" arg(1);return result
  80. uexists: if pos('@',gethost(arg(1)))~==0 then return 1;else return 0
  81. kick:;'RAW KICK' arg(1) arg(2) ':'arg(3);return 0
  82. mod:;'RAW MODE' channel arg(1);return 0
  83. amrx:;'SAY /RX' arg(1);return 0
  84. ply:
  85. if getclip('sc_playsounds')~=='ON' then return 0
  86. 'PLAYSOUND _K11'arg(1)'.snd'
  87. return 0
  88. prsprg:PROCEDURE
  89. x=arg(1)
  90. z=right(x,1)
  91. if z~='/'&z~=':' then x=x||'/'
  92. if upper(left(x,8))='PROGDIR:' then do
  93.     y=pragma('d')
  94.     z=right(y,1)
  95.     if z~='/'&z~=':' then y=y||'/'
  96.     if length(x)>8 then return y||substr(x,9);else return y
  97. end
  98. return x
  99. rts:
  100. if ~show('L','rexxreqtools.library') then if ~addlib('rexxreqtools.library',0,-30,0) then do
  101.     vecho('Fatal Error','Cannot load rexxreqtools.library')
  102.     exit
  103. end
  104. "INFO screen"
  105. tags='rt_pubscrname="'result'"'
  106. NL = '0a'x
  107. return 0
  108. resnick:PROCEDURE
  109. tnick=arg(1)
  110. Select
  111. when pos('@',tnick)~=0 then do
  112.     "GETSELECTEDUSER"
  113.     tnick=result
  114. end
  115. when pos('*',tnick)~=0 then do
  116.     "GETUSERS"
  117.     users=compress(result,'@+')
  118.     nix='';upper tnick
  119.     do until users=''
  120.         parse var users nick users
  121.         "MATCHUSERHOST" nick'!*@*' tnick'*!*@*'
  122.         if rc=1 then nix=nix nick
  123.     end
  124.     tnick=strip(nix)
  125.     if tnick='' then do
  126.         cecho('MatchNick','Unable to match')
  127.         exit
  128.     end
  129.     if words(tnick)>1 then do
  130.         cecho('MatchNick','Multiple nicks found :' tnick)
  131.         exit
  132.     end
  133. end
  134. otherwise
  135. end
  136. return tnick
  137. syntax:
  138. "ECHO" "P=Syntax" "Command on line" SIGL "returned" RC ":" errortext(rc) sourceline(SIGL)
  139. exit
  140. /*## Commands functions here
  141. */
  142.  
  143. reall:
  144. "GETUSERS"
  145. x="Re" translate(compress(result,"@+"),","," ")
  146. do until x=''|length(x)=1
  147. p=min(length(x),150)
  148. parse var x y =p x
  149. "SAY" y
  150. end
  151. exit
  152.  
  153. ransk:
  154. pr='Ransk'
  155. if args='' then do
  156.     cecho(pr,'Usage : /Ransk [Nick]')
  157.     exit
  158. end
  159. args=resnick(strip(args))
  160. if ~ison(args) then do
  161.     cecho(pr,'Unknown nick')
  162.     exit
  163. end
  164. x=random(1,365,time('s'))
  165. 'SAY' bld('Spinning the Wheel of Fate... It lands on K¹¹ kick #'||x)
  166. args=args getchan()
  167. select
  168.     when x<48 then amrx('butt' args x) /*47*/
  169.     when x<249 then amrx('momma' args x-47) /*     201*/
  170.     when x<255 then amrx('philosophy' args x-248) /*7*/
  171.     when x<266 then amrx('pinkybrain' args x-254) /*11*/
  172.     when x<295 then amrx('rin' args x-265) /*29*/
  173. otherwise
  174.     amrx('splatt' args x-294) /*70*/
  175. end
  176. exit
  177.  
  178. achan:
  179. 'SAY /msg' translate(chans(),',',' ') args
  180. exit
  181.  
  182. ig:
  183. pr='KIgnore'
  184. if args='' then do
  185.     cecho(pr,'Usage: /KX KING [NICK] {CTCP|PRIV|TEXT}')
  186.     exit
  187. end
  188. parse var args nick f
  189. f=strip(f)
  190. nick=resnick(nick)
  191. if ~ison(nick) then do
  192.     cecho(pr,'Nick' bld(nick) 'not found')
  193.     exit
  194. end
  195. if f='' then f='CTCP PRIV'
  196. host=gethost(nick)
  197. 'SAY /IGNORE *!*@'substr(host,pos('@',host)+1) f
  198. exit
  199.  
  200. noig:
  201. pr='KUnIgnore'
  202. if args='' then do
  203.     cecho(pr,'Usage: /KX KUNG [NICK]')
  204.     exit
  205. end
  206. nick=resnick(strip(args))
  207. if ~ison(nick) then do
  208.     cecho(pr,'Nick' bld(nick) 'not found')
  209.     exit
  210. end
  211. host=gethost(nick)
  212. 'SAY /UNIGNORE *!*@'substr(host,pos('@',host)+1)
  213. exit
  214.  
  215. join:
  216. args=strip(args)
  217. if args='' then do
  218.     cecho('Join','Specify Channel,no '#' required')
  219.     exit
  220. end
  221. if substr(args,1,1)~=='#' then args='#'args
  222. 'SAY /JOIN' args
  223. exit
  224.  
  225. skick:
  226. pr='SpeakKick'
  227. if args='' then do
  228.     cecho(pr,'Usage: /SKICK [NICK] [TIME] (in seconds)')
  229.     exit
  230. end
  231. parse var args nk t .
  232. if ~datatype(t,'W') then do
  233.     vecho(pr,'Invalid arguments')
  234.     exit
  235. end
  236. nk=resnick(nk)
  237. if ~ison(nk) then do
  238.     vecho(pr,bld(nk) 'is not on channel')
  239.     exit
  240. end
  241. if t>0 then do
  242.     setclip('st_skickt')
  243.     nku=upper(nk)
  244.     setclip('st_skick',nku)
  245.     'SAY /HILITE' nk
  246.     'SAY /ME Sets Speak Kick on' bld(nk) 'for' t 'seconds'
  247.     notice(nk,'You are not allowed to speak for' t 'seconds!')
  248.     cecho(pr,'/Skick' nk '0 to remove prematurely')
  249.     do t
  250.         delay(50)
  251.         if getclip('st_skick')~==nku then exit
  252.     end
  253. end
  254. 'SAY /UNHILITE' nk
  255. setclip('st_skick')
  256. setclip('st_skickt')
  257. 'SAY /ME Removes Speak Kick from' bld(nk)
  258. notice(nk,'You may now speak!')
  259. exit
  260.  
  261. pban:
  262. kb()
  263. 'SAY /KC ADDF' n 'b'
  264. exit
  265.  
  266. kb:
  267. pr='KickBan'
  268. if args='' then do
  269.     cecho(pr,'Usage : /BK [NICK] <REASON>')
  270.     exit
  271. end
  272. parse var args n r
  273. n=resnick(n)
  274. if ~uexists(n) then do
  275.     cecho(pr,'Unknown Nick' bld(n))
  276.     exit
  277. end
  278. host=gethost(n)
  279. if r='' then r='Banned'
  280. channel=getchan()
  281. mod('-o+b' n '*!*@'userdomain(substr(host,pos('@',host)+1)))
  282. if ison(n) then kick(channel,n,r)
  283. return 0
  284.  
  285. ikick:
  286. parse var args n r
  287. n=resnick(n)
  288. if ~ison(n) then do
  289.     cecho('InviteKick',bld(n) 'is not on channel')
  290.     exit
  291. end
  292. channel=getchan()
  293. if r='' then r='[Kuang Eleven]'
  294. mod('+i')
  295. kick(channel,n,r)
  296. delay(300)
  297. mod('-i')
  298. exit
  299.  
  300. away:
  301. clip='st_orignick'right(address(),1);quiet=0
  302. "GETAWAYSTATE"
  303. if rc=5 then do
  304.     if upper(strip(args))='QUIET' then quiet=1
  305.     x=getclip('st_awaymsgs')
  306.     if x='' then x='no';else setclip('st_awaymsgs')
  307.     cecho('AwayLog','You have' x 'messages waiting')
  308.     if x~='no' then showlog()
  309.     setclip('st_iconified')
  310.     str='is Back.'
  311.     'raw away'
  312.     setclip('st_awayt')
  313.     "GETCTCPSOUNDDIR"
  314.     onick=getclip(clip)
  315.     if onick~='' then do
  316.         setclip(clip)
  317.         'RAW NICK' onick
  318.     end
  319.     snd=backsnd
  320. end
  321. else do
  322.     args=strip(args)
  323.     if upper(word(args,1))='QUIET' then do
  324.         quiet=1
  325.         parse var args . args
  326.     end
  327.     if args=''|datatype(args,'W') then args=getreason(args)
  328.     disp=getclip('sc_awayverb')
  329.     log=getclip('sc_log')
  330.     if log=='' then log='OFF'
  331.     page=getclip('sc_page')
  332.     if page=='' then page='OFF'
  333.     s='Log['log'] Page['page']'
  334.  
  335.     if disp='ON' then str='->'args'<-';else str=':' args'.'
  336.     cecho('Away','You have been marked away' str||s)
  337.     if disp='ON' then str=str||s
  338.     str='is away' str
  339.  
  340.     if page='ON' then s=s '/CTCP' getnick() 'PAGE'
  341.     'raw away :'args s
  342.     setclip('st_awayt',date('i') time('s'))
  343.     if getclip('sc_aicon')=='ON' then do
  344.         setclip('st_iconified',1)
  345.         "HIDE"
  346.         if show('P',KUANG) then address KUANG HIDE
  347.     end
  348.     awnick=getclip('sc_awaynick')
  349.     if awnick~='' then do
  350.         setclip(clip,getnick())
  351.         'RAW NICK' awnick
  352.     end
  353.     snd=awaysnd
  354. end
  355. a=getclip('sc_awaytxt')
  356. Select
  357.     when quiet then exit
  358.     when a='TEXT'|a='ON' then str=div||'ACTION' str||div
  359.     when a='SOUND' then str=div||'SOUND' snd||div
  360.     when a='BOTH' then str=div||'SOUND' snd str||div
  361. otherwise
  362.     exit
  363. end
  364. c=chans()
  365. if words(c)~==0 then do i=1 to words(c)
  366.     'raw PRIVMSG' word(c,i) ':'str
  367. end
  368. if a~='TEXT' then "PLAYSOUND" snd
  369. exit
  370.  
  371. getreason: PROCEDURE EXPOSE defaultaway
  372. if ~open(1,'Kuang11/AwayReasons','R') then return defaultaway
  373. msgs=readch(1,65535);cr='0a'x
  374. close(1)
  375. amsg.='';i=0
  376. do until msgs=''
  377.     parse var msgs msg (cr) msgs
  378.     if msg='' then leave
  379.     i=i+1
  380.     amsg.i=msg
  381. end
  382. if i=0 then return defaultaway
  383. if datatype(arg(1),'W') then return value('amsg.'min(i,max(1,arg(1))))
  384. return value('amsg.'random(1,i,time('s')))
  385.  
  386. showlog:
  387. f='kuang11/AwayLog'
  388. if open(1,f,'r') then do
  389.     pr='AwayLog'
  390.     if command='AWAY' then cecho(pr,'Displaying your saved messages')
  391.     else do
  392.         "GETAWAYSTATE"
  393.         if rc=5 then exit
  394.         cecho(pr,'You have saved messages from last session')
  395.     end
  396.     do until eof(1)
  397.         y=strip(readln(1))
  398.         if y=='' then leave
  399.         parse var y n t e
  400.         select
  401.             when e='PAGE' then cecho(pr,bld(n) 'Paged you at' t)
  402.             when e='DCCCHAT' then cecho(pr,bld(n) 'Wanted to chat with you at' t)
  403.         otherwise
  404.             cecho(pr,bld(n) 'Said At' t ':' e)
  405.         end
  406.     end
  407.     ply('ENDLOG')
  408.     cecho(pr,'End of Log')
  409.     close(1)
  410.     delete(f)
  411. end
  412. return 0
  413.  
  414.  
  415. vote:
  416. pr='LAmuhVotE'
  417. v=getclip('st_vote')
  418. if args='' then do
  419.     if v~='' then do
  420.         r=getclip('st_voteres')
  421.         cecho(pr,bld(word(r,1)) 'Kicks' bld(word(r,2)) 'KickBans' bld(word(r,3)) 'Stays')
  422.     end
  423.     else cecho(pr,'Usage :  /VOTE [NICK]|[COUNT]|[UPDATE]|[CANCEL]')
  424.     exit
  425. end
  426. args=strip(args)
  427. com=upper(args)
  428. select
  429. when com='CANCEL' then do
  430.     if v='' then do
  431.         cecho(pr,'No vote started')
  432.         exit
  433.     end
  434.     setclip('st_vote')
  435.     setclip('st_votenix')
  436.     setclip('st_voteres')
  437.     cecho(pr,'Vote on' v 'cancelled' )
  438.     'SAY' bld('Vote on' v und('cancelled')'!')
  439. end
  440. when com='COUNT' then do
  441.     if v='' then do
  442.         cecho(pr,'No vote started')
  443.         exit
  444.     end
  445.     setclip('st_vote')
  446.     setclip('st_votenix')
  447.     r=getclip('st_voteres')
  448.     setclip('st_voteres')
  449.     parse var r k b s
  450.     'say' und(bld('K¹¹ Voting on' v 'Complete..'))
  451.     'SAY' k 'kicks'
  452.     'SAY' b 'ban/kicks'
  453.     'SAY' s 'stays'
  454.     channel=getchan()
  455.     Select
  456.         when b>k&b>s then do
  457.             'SAY' channel 'has decided to ban/kick' bld(v)
  458.             'SAY /KICKBAN' v bld('The people have spoken!')
  459.         end
  460.         when k+b>s then do
  461.             'SAY' channel 'has decided to kick' bld(v)
  462.             kick(channel,v,'The people have spoken!')
  463.         end
  464.         otherwise
  465.         'SAY' channel 'has decided to leave' bld(v) 'alone.'
  466.     end
  467.     exit
  468. end
  469. when com='UPDATE' then do
  470.     if v='' then do
  471.         cecho(pr,'No vote started')
  472.         exit
  473.     end
  474.     'say' bld(und('K¹¹ lamah voting!') '- Voting on' v)
  475.     r=getclip('st_voteres')
  476.     parse var r k b s
  477.     Select
  478.         when b>k&b>s then 'SAY Right now it looks like' bld(v) 'is gonna get bankicked!'
  479.         when k+b>s then 'SAY Right now it looks like' bld(v) 'is gonna get kicked!'
  480.         when k=b&b=s then 'SAY Right now the vote is tied.'
  481.         otherwise
  482.         'SAY Right now it looks like' bld(v) 'will be spared...'
  483.     end
  484.     exit
  485. end
  486. when ~ison(args) then cecho(pr,bld(args) 'is not on channel')
  487. otherwise
  488.     args=resnick(args)
  489.     setclip('st_vote',args)
  490.     setclip('st_voteres','0 0 0')
  491.     setclip('st_votenix')
  492.     cecho(pr,'New Vote on' bld(args) 'started')
  493.     mynick=getnick()
  494.     'say' bld(und('K¹¹ lamah voting!') '- Voting on' args)
  495.     'say If you think' bld(args) 'should be kicked,' bld('/msg' mynick 'K')
  496.     'say If you think' bld(args) 'should be ban/kicked,' bld('/msg' mynick 'BK')
  497.     'say If you think we should leave' bld(args) 'alone,' bld('/msg' mynick 'S')
  498.     'SAY' bld('...Do not vote more than once.')
  499.     cecho(pr,'/VOTE COUNT to count vote')
  500.     cecho(pr,'/VOTE UPDATE to display an update')
  501.     cecho(pr,'/VOTE CANCEL to abort')
  502. end
  503. exit
  504.  
  505. votetst:
  506. parse var args nick t .
  507. upper t
  508. pr='LAmuhVotE'
  509. nx=getclip('st_votenix')
  510. nk=' '||upper(nick)||' '
  511. if pos(nk,nx)~=0 then do
  512.     notice(nick,'You have voted already')
  513.     kick(getchan(),nick,'Voted twice')
  514.     cecho(pr,bld(nick) 'voted twice')
  515.     exit
  516. end
  517. r=getclip('st_voteres')
  518. parse var r k b s
  519. Select
  520.     when t='K' then do
  521.         k=k+1
  522.         t='Kick'
  523.     end
  524.     when t='BK'|t='KB' then do
  525.         b=b+1
  526.         t='KickBan'
  527.     end
  528. otherwise
  529.     s=s+1
  530.     t='Stay'
  531. end
  532. notice(nick,'Thanx for voting to' t getclip('st_vote')'..')
  533. cecho(pr,bld(nick) 'voted' bld(t))
  534. cecho(pr,'Kicks:'bld(k) 'KickBans:'bld(b) 'Stays:'bld(s))
  535. setclip('st_voteres',k b s)
  536. setclip('st_votenix',nx||nk)
  537. exit
  538.  
  539.  
  540. XDCC:
  541. pr='XDCC'
  542. parse var args command nick spec
  543. command=upper(command)
  544. xdcc=getclip('sc_xdcc')
  545. Select
  546.     when command='PLIST' then do
  547.         if xdcc~='ON' then amrx('kuang11C XDCC')
  548.         amrx('kuang11XDCC 1 pxdcc LIST .' nick)
  549.     end
  550.     when command='SLIST' then do
  551.         if xdcc~='ON' then amrx('kuang11C XDCC')
  552.         amrx('kuang11XDCC 0 pxdcc LIST .' nick)
  553.     end
  554.     when command='LIST' then amrx('kuang11XDCC 1 xdcc LIST .' nick)
  555.     when command='VLIST' then amrx('kuang11XDCC 1 vxdcc LIST .' nick)
  556.     when command='XDCC' then amrx('kuang11C XDCC')
  557.     when command='SEC' then amrx('kuang11C SEC')
  558.     when command='KICK' then amrx('kuang11C XDCCK')
  559.     when command='MASSK' then amrx('kuang11C XDCCM')
  560.     when command='RATE'|command='RATES' then amrx('kuang11C XRATE')
  561.     when command='STYLE' then amrx('kuang11C STYLE')
  562.     when command='XSLOT'|command='XSLOTS'|command='SLOTS'|command='SLOT' then amrx('kuang11C XSLOT' nick)
  563.     when command='ADDP' then addp()
  564.     when command='DELP' then delp()
  565.     when command='NOTI' then do
  566.         if xdcc~='ON' then amrx('kuang11C XDCC')
  567.         amrx('kuang11xdcc 1 noti LIST dummy')
  568.     end
  569.     when command='ANOTI' then anoti()
  570.     when command='QUEUE'|command='QUE' then call queue()
  571.     when command='SEND'|command='MOVE' then amrx('kuang11XDCC 1 local' command resnick(nick) spec)
  572.     when command='DELQ' then call delq()
  573.     when command='ANSI' then amrx('kuang11C XANSI')
  574.     otherwise
  575.     px='/XDCC '
  576.     cecho(pr,und(bld('Commands')))
  577.     cecho(pr,px'LIST <N> - To View the list.')
  578.     cecho(pr,px'VLIST <N> - To View the list in verbose format.')
  579.     cecho(pr,px'PLIST <N> - To display the list to current channel.')
  580.     cecho(pr,px'SLIST <N> - To display only unsecured packs to the current channel.')
  581.     cecho(pr,px'NOTI - To send a short notify to the channel.')
  582.     cecho(pr,px'ANOTI [TIME] <MSG>- To autosend notification to current channel.')
  583.     cecho(pr,px'SEND|MOVE [NICK] [N] - To dcc send/move pack N to NICK.')
  584.     cecho(pr,px'ADDP - To add a pack.')
  585.     cecho(pr,px'DELP [N]|[ALL] - To delete pack N or ALL packs.')
  586.     cecho(pr,px'QUEUE - Displays queue list')
  587.     cecho(pr,px'DELQ [N] - Abort queue')
  588.     cecho(pr,und(bld('Configuration')))
  589.     cecho(pr,px'XDCC - Enable/Disable XDCC' wt('xdcc'))
  590.     cecho(pr,px'SEC - Global Sec' wt('xdccsec'))
  591.     cecho(pr,px'KICK - Kick Unregistered requests' wt('xdcckick'))
  592.     cecho(pr,px'MASSK - Kick on MassXdcc' wt('xdcc_masskick'))
  593.     cecho(pr,px'RATES - Display rates' wt('xdccrates'))
  594.     cecho(pr,px'SLOTS [N] - XDCC Slots' wt('xdccslots'))
  595.     cecho(pr,px'STYLE - XDCC ANSI Style' wt('xdccstyle'))
  596.     cecho(pr,px'ANSI - Use Bold/Underline' wt('xdccbold'))
  597. end
  598. exit
  599. wt:;return '['bld(getclip('sc_'||lower(arg(1))))']'
  600. halt:
  601. if getclip('sc_xdcca')~='' then do
  602.     setclip('sc_xdcca')
  603.     cecho(pr,'Stopped AutoNotifying')
  604. end
  605. if getclip('st_amsg')~='' then do
  606.     setclip('st_amsg')
  607.     cecho(pr,'Stopped AutoMessaging')
  608. end
  609. exit
  610.  
  611. queue:
  612. l=strip(getclip('st_xdccq'))
  613. if l='' then cecho(pr,'No queued requests')
  614. else do
  615.     cecho(pr,und('Queue list:'))
  616.     do i=1 to words(l)
  617.         r=word(l,i)
  618.         parse var r nk'@'pack'@'com'@'files'@'port .
  619.         cecho(pr,'<'bld(i)'> Pack' pack com 'to' nk files 'file(s) on port' port )
  620.     end
  621. end
  622. exit
  623.  
  624. delq:
  625. parse var args . q .
  626. if q='' then do
  627.     cecho(pr,'Usage : /XDCC DELQ [N]|[ALL] - Number of queue or ALL')
  628.     exit
  629. end
  630. clip='st_xdccq'
  631. if q='ALL' then do
  632.     setclip(clip)
  633.     cecho(pr,'Aborted all queues')
  634.     exit
  635. end
  636. x=getclip(clip)
  637. if words(x)<q then do
  638.     cecho(pr,'No such queue')
  639.     call queue()
  640. end
  641. setclip(clip,strip(delword(x,q,1)))
  642. cecho(pr,'Queued request' q 'aborted.')
  643. exit
  644.  
  645. anoti:
  646. clip='st_xdcca'right(address(),1)
  647. parse var args . time msg
  648. msg=strip(msg)
  649. if upper(time)='STOP' then do
  650.     setclip(clip)
  651.     cecho(pr,'Signaled AutoNotify to Stop in next 10 seconds')
  652.     exit
  653. end
  654. clist=getclip(clip)
  655. nclist=words(clist)
  656. if nclist=0&~datatype(time,'W') then do
  657.     cecho(pr,'Usage : /XDCC ANOTI [TIME]|[STOP] [MESSAGE] (time in minutes)')
  658.     exit
  659. end
  660. if getclip('sc_xdcc')~='ON' then amrx('kuang11C XDCC')
  661. chan=getchan()
  662. if clist='' then clist=time
  663. else if find(upper(clist),upper(chan))~=0 then do
  664.     cecho(pr,'Channel' bld(chan) 'is already AutoNotified')
  665.     exit
  666. end
  667. setclip(clip,clist chan)
  668. cecho(pr,'Started AutoNotifying on channel' bld(chan) 'every' bld(time) 'minutes')
  669. cecho(pr,'/XDCC ANOTI STOP to Stop AutoNotify')
  670. if nclist>0 then exit
  671. signal on halt
  672. do until getclip(clip)=''
  673.     c=getclip(clip)
  674.     parse var c time c
  675.     td=3000*time;chans=upper(chans());cd='';t=0
  676.     do i=1 to words(c)
  677.         channel=word(c,i)
  678.         if find(chans,upper(channel))=0 then cecho(pr,'Stopped AutoNotifying on Channel' bld(channel))
  679.         else do
  680.             cd=cd channel
  681.             if msg~='' then sayc(channel,msg)
  682.         end
  683.     end
  684.     cd=strip(cd)
  685.     if cd='' then leave
  686.     if cd~=c then setclip(clip,time cd)
  687.     amrx('kuang11xdcc 1 noti LIST')
  688.     cecho(pr,'Sent AutoNotify to' bld(cd) '['bld(time)']')
  689.     do until t=td|getclip(clip)=''
  690.         delay(500)
  691.         t=t+500
  692.     end
  693.     if getclip('sc_xdcc')~='ON' then leave
  694. end
  695. setclip(clip)
  696. cecho(pr,'Stopped AutoNotify')
  697. exit
  698.  
  699. amsg:
  700. pr='AutoMSG'
  701. clip='st_amsg'right(address(),1)
  702. parse var args time msg
  703. msg=strip(msg)
  704. if upper(time)='STOP' then do
  705.     setclip(clip)
  706.     cecho(pr,'Signaled AutoMessage to Stop in next 10 seconds')
  707.     exit
  708. end
  709. clist=getclip(clip)
  710. nclist=words(clist)
  711. if nclist=0&(~datatype(time,'W')|msg='') then do
  712.     cecho(pr,'Usage : /AMSG [TIME]|[STOP] [MESSAGE] (time in minutes)')
  713.     exit
  714. end
  715. chan=getchan()
  716. if clist='' then clist=time
  717. else if find(upper(clist),upper(chan))~=0 then do
  718.     cecho(pr,'Channel' bld(chan) 'is already AutoMessaged')
  719.     exit
  720. end
  721. setclip(clip,clist chan)
  722. cecho(pr,'Started AutoMessaging on channel' bld(chan) 'every' bld(time) 'minutes')
  723. cecho(pr,'/AMSG STOP to Stop AutoMessage')
  724. if nclist>0 then exit
  725. signal on halt
  726. do until getclip(clip)=''
  727.     c=getclip(clip)
  728.     parse var c time c
  729.     td=3000*time;chans=upper(chans());cd='';t=0
  730.     do i=1 to words(c)
  731.         channel=word(c,i)
  732.         if find(chans,upper(channel))=0 then cecho(pr,'Stopped AutoMessage on Channel' bld(channel))
  733.         else do
  734.             cd=cd channel
  735.             sayc(channel,msg)
  736.         end
  737.     end
  738.     cd=strip(cd)
  739.     if cd~=c then setclip(clip,time cd)
  740.     cecho(pr,'Sent AutoMessage to' bld(cd) '['bld(time)']')
  741.     do until t=td|getclip(clip)=''
  742.         delay(500)
  743.         t=t+500
  744.     end
  745. end
  746. cecho(pr,'Stopped AutoMessage')
  747. exit
  748.  
  749. addp:
  750. rts()
  751. dir=rtfilerequest(,,'Pick files for pack...',,'rtfi_flags = freqf_multiselect' tags,files)
  752. if dir='' then exit
  753. sz=0
  754. do i=1 to files.count
  755.     if pos(':',files.i)=0 then files.i=pragma('D')'/'files.i
  756.     if ~exists(files.i) then do
  757.         cecho(pr,'File' files.i 'does not exist!')
  758.         exit
  759.     end
  760.     sz=sz+word(statef(files.i),2)
  761. end
  762. desc=strip(rtgetstring(exdiz(dir),'Enter Pack Description:','Kuang Eleven XDCC',,tags,))
  763. if rtresult=0 then exit
  764. if getclip('sc_xdccrates')='ON' then rate=rtezrequest("Select Rate:","5 Star|4 Star|3 Star|2 Star|1 Star|X-R8D|Cancel",'Kuang Eleven XDCC',tags)
  765. else rate=1
  766. if rate=0 then exit
  767. if rate=6 then rate='X-R8D';else rate=copies('-',rate-1)copies('*',6-rate)
  768. sec=rtezrequest("Select Sec:","OFF|O_N|Cancel",'Kuang Eleven XDCC',tags)
  769. if sec=0 then exit
  770. sec=sec-1
  771. if sz>1000000 then do
  772.     do until datatype(mcps,'W')
  773.         mcps=strip(rtgetstring('0','Enter Minimum required CPS value:'||NL||'0 to disable','Kuang Eleven XDCC',,tags,))
  774.     end
  775.     if rtresult=0 then exit
  776. end
  777. else mcps=0
  778. f='kuang11/XDCC'
  779. if exists(f) then m='A';else m='W'
  780. if ~open(1,f,m) then do
  781.     cecho(pr,'Unable to write' f)
  782.     exit
  783. end
  784. writeln(1,'#')
  785. do i=1 to files.count
  786.     writeln(1,'`'files.i)
  787. end
  788. writeln(1,desc)
  789. writeln(1,trunc(sz/1000) rate sec mcps)
  790. close(1)
  791. setclip('st_xdccbank')
  792. cecho(pr,'Added Pack Ok' desc)
  793. exit
  794.  
  795. delp:
  796. f='kuang11/XDCC'
  797. if upper(nick)='ALL' then do
  798.     if exists(f) then do
  799.         delete(f)
  800.         setclip('st_xdccbank')
  801.     end
  802.     cecho(pr,'XDCC bank has been emptied!')
  803.     exit
  804. end
  805. if ~datatype(nick,'w') then do
  806.     cecho(pr,'Invalid Pack Specified')
  807.     exit
  808. end
  809. if nick<1 then do
  810.     cecho(pr,'Invalid Pack Specified')
  811.     exit
  812. end
  813. if ~exists(f) then do
  814.     cecho(pr,'No packs in XDCC Bank')
  815.     exit
  816. end
  817. if ~open(1,f,'r') then do
  818.     cecho(pr,'Error : Unable to open' f)
  819.     exit
  820. end
  821. cr=x2c('0a')
  822. x='';i=0;pack.=0
  823. do until eof(1)
  824.     y=strip(readln(1))
  825.     if y~='' then do
  826.         if y='#' then do
  827.             i=i+1
  828.             pack.i=length(x)+1
  829.         end
  830.         x=x||y||cr
  831.     end
  832. end
  833. close(1)
  834. if nick>i then do
  835.     cecho(pr,'Invalid Pack Specified')
  836.     exit
  837. end
  838. if i=1 then do
  839.     delete(f)
  840.     cecho(pr,'XDCC bank has been emptied!')
  841.     exit
  842. end
  843. if nick=i then  x=delstr(x,pack.nick)
  844. else do
  845.     y=nick+1
  846.     x=delstr(x,pack.nick,pack.y-pack.nick)
  847. end
  848. if ~open(1,f,'w') then do
  849.     cecho(pr,'Unable to write' f)
  850.     exit
  851. end
  852. writech(1,x)
  853. close(1)
  854. setclip('st_xdccbank')
  855. cecho(pr,'Deleted pack' nick 'Ok')
  856. exit
  857.  
  858. exdiz: PROCEDURE
  859. fn=arg(1)
  860. if exists('t:file_id.diz') then delete('t:file_id.diz')
  861. p=lastpos('.',fn)
  862. psn=max(lastpos('/',fn),pos(':',fn))+1
  863. if p=0 then return substr(fn,psn)
  864. ext=upper(substr(fn,p))
  865. Select 
  866.     when ext='.LZX' then
  867.         address command 'lzx -q e "'arg(1)'" file_id.diz T:'
  868.     when (ext='.LHA')|(ext='.LZH') then
  869.         address command 'lha -q e "'arg(1)'" file_id.diz T:'
  870.     when ext='.DMS' then
  871.         address command 'dmsdescript >NIL: x T:file_id.diz "'arg(1)'"'
  872.     when (ext='.TXT')|(ext='.NFO') then
  873.         address command 'magicdiz >NIL: e "'arg(1)'" t:file_id.diz'
  874.     otherwise
  875.     return substr(fn,psn)
  876. end
  877. if ~exists('t:File_id.diz') then return substr(fn,psn,p-psn)
  878. open(1,'t:file_Id.diz','R')
  879. diz=readch(1,65535)
  880. close(1)
  881. delete('t:file_id.diz')
  882. return strip(space(compress(diz,compress(diz,xrange(0,9)xrange('a','z')xrange('A','Z')'-@#:*& ')),1))
  883.  
  884. getusers: PROCEDURE;"CHANNELS";c=upper(result);if words(c)==1 then "GETUSERS";else "GETUSERS" find(c,upper(arg(1)));return result
  885. getall: PROCEDURE
  886. stat=arg(2);mynick=stat||getnick();nx='';tmpnx=getusers(arg(1))
  887. do while tmpnx~=''
  888.     parse var tmpnx nk tmpnx
  889.     if nk=mynick then iterate
  890.     if left(nk,1)=stat|(stat=''&pos(left(nk,1),'+@')=0) then nx=nx strip(nk,'L','+@')
  891. end
  892. return nx
  893.  
  894. wnops:
  895. pt=wnpr
  896. pr='WAllNOps'
  897. usg='CHOPS'
  898. st=''
  899. signal transmit
  900.  
  901. wchops:
  902. pt=wcpr
  903. pr='WAllChOps'
  904. st='@'
  905.  
  906. transmit:
  907. if ARGS='' then do
  908.     cecho(pr,'Usage : /'command '[TEXT]')
  909.    exit
  910. end
  911. x=getclip('st_wchop')
  912. if x='' then x=1;else x=x+1
  913. if x=3 then do
  914.     cecho(pr,'Too many WAlls...')
  915.     exit
  916. end
  917. setclip('st_wchop',x)
  918. channel=getchan()
  919. nx=getall(channel,st)
  920. if words(nx)=0 then do
  921.     cecho(pr,'No one to send.')
  922.     exit
  923. end
  924.  
  925. p=pos('%c',pt)
  926. if p~=0 then pt=insert(substr(channel,2),delstr(pt,p,2),p-1)
  927. msg=strip(pt strip(ARGS))
  928. cecho(pr,msg)
  929. if x=1 then def=200;else def=1
  930. do i=1 to words(nx)
  931.     nk=word(nx,i)
  932.     notice(nk,msg)
  933.     delay(100)
  934. end
  935. cecho(pr,'Done')
  936. x=getclip('st_wchop')
  937. if x=1 then setclip('st_wchop');else setclip('st_wchop',x-1)
  938. exit
  939.